﻿#ifndef tcp_server_h__
#define tcp_server_h__

typedef enum socket_comm_type
{
    SOCK_TYP_LOG_GET,
    SOCK_TYP_LOG_ENTRY,
    SOCK_TYP_PROG_QUIT,
    
}socket_comm_type_t;

#define SERVER_LISTENING_NUM 32 //同时服务的客户端数量
/*
 *	定义网络通讯的结构
 */
#define COMM_DATA_MAX_SIZE 1400 //网络通信的最大数据长度
// 网络通讯实体
typedef struct socket_comm_entry
{
    std::string remote_ip;              // 远端IP
    int remote_port;            // 远端Port
    unsigned int id;

    unsigned char data[COMM_DATA_MAX_SIZE];   // 数据区
    unsigned int data_size;                  // 数据长度
}socket_comm_entry_t;

// 网络通讯队列
typedef struct socket_comm_queue
{
    std::queue<socket_comm_entry_t> _queue;//队列
    boost::mutex _mutex;//队列互斥量
    boost::condition_variable _cond;//条件变量
}socket_comm_queue_t;

int tcp_server_start();
void tcp_server_stop();
void tcp_server_listen(int port);
socket_comm_type_t type_from_thrd_to_comm(task_type_t type);
task_type_t type_from_comm_to_thrd(socket_comm_type_t type);

#endif // tcp_server_h__
